package conductores;

import java.util.Collections;

public class EstadoInicial3 implements IEstadoInicial {
	@Override
	public void execute(Board board) {
		System.out.println("Generamos el estado inicial complejo:Se hace la asignación usuario conductor en función de la distancia recorrida por el conductor y la distancia que ha de recorrer el usuario");
    	//assignaremos al conductor con el recorrido de ruta de mínima distancia a el usuario con mayor distancia entre el usuario y el trabajo
		 
         Conductor MasDescargado;
        if(board.conductores.size()>0){
         while(board.pendientes.size()>0){
        	 ordena_lista(board);
        	 MasDescargado=board.conductores.get(0);
        	 board.opMeter(MasDescargado, board.pendientes.get(0), 0, 1);
         }
        }
         

         System.out.println(" -----------------------------Queda así");
         board.Lapo2();
         
         System.out.println(" --------------------------------------");
         
         

}
	  private void ordena_lista(Board board){
		 Collections.sort(board.conductores);
		 
		 if(board.pendientes.size()>1){
			 int min=Context.SIZE*Context.SIZE;
			 int user=0;
			 int puser=0; 
			 int pend=board.pendientes.get(0);
			 for(int i=0;i<board.pendientes.size();i++){
				 pend=board.pendientes.get(i);
				 if(Context.usuarios[pend].distancia<min){
					 min=Context.usuarios[pend].distancia;
					 puser=i;
					 user=pend;
				 }
			 
			 }
			 board.pendientes.remove(puser);
			 board.pendientes.add(0,user);
		 
     	 	}
	  }

}
